﻿namespace DbManager.QueryBuilder.DbEntity.Bron
{
    public class EntityBron : AEntityBron
    {
        public override string GetSelectQuery()
        {
            return "SELECT " +
                "Бронь.Идентификатор AS Номер, " +
                "Клиент.Фамилия, " +
                "Клиент.Имя, " +
                "Клиент.Отчество AS Hide_ClientFName, " +
                "Клиент.Адрес AS Hide_ClientAdress, " +
                "Клиент.[Телефон 1] AS Hide_ClientTel1, " +
                "Клиент.[Телефон 2] AS Hide_ClientTel2, " +
                "Клиент.[Черный список] AS Hide_ClientBlackList, " +
                "Направление.Идентификатор AS Hide_IDNapravlenie, " + 
                "Направление.Название AS Направление, " +
                "Город.Идентификатор AS Hide_IDGorod, " + 
                "Город.Название AS Город, " +
                "[База отдыха].Идентификатор AS Hide_IDBazaOtdiha, " + 
                "[База отдыха].Название AS [База отдыха], " +
                "Условия.Идентификатор AS Hide_IDUslovia, " +
                "Условия.Название AS Условия, " +
                "Комната.Идентификатор AS Hide_IDKomnata, " + 
                "Комната.[Класс комнаты] AS Класс, " + 
                "Комната.[Количество мест] AS Мест, " +
                "Транспорт.Идентификатор AS Hide_IDTransport, " +
                "Транспорт.Транспорт, " +
                "Бронь.[Идентификатор клиента] AS Hide_IDClient, " +
                "Бронь.[Идентификатор группы] AS Hide_IDGroup, " +
                "Бронь.[Идентификатор цена проживания] AS Hide_IDPol, " +
                "Бронь.[Идентификатор цена проезда] AS Hide_IDPot, " +
                "Бронь.[Идентификатор выезда] AS Hide_IDViezd, " +
                "Бронь.[Идентификатор стоимость] AS Hide_IDPrice, " + 
                "Бронь.[Дата начала отдыха] AS [Начало отд], " + 
                "Бронь.[Дата конца отдыха] AS [Конец отд], " + 
                "Бронь.[Продолжительность отдыха] AS Срок, "+
                "Стоимость.[Проезд] AS [Проезд], " +
                "Стоимость.[Жилье] AS [Жилье], " +
                "Стоимость.[Скидка жилье] AS [Hide_DiscountProjivanie], " +
                "Стоимость.[Трансфер] AS [Hide_Transfer], " +
                "Стоимость.[Бронь] AS [Hide_Bron], " +
                "Стоимость.[Оплачено проезд] AS [Hide_OplachenoProezd], " +
                "Стоимость.[Оплачено жилье] AS [Hide_OplachenoProjivanie], " +
                "Стоимость.[Всего к оплате] AS Всего, " +
                "Бронь.[Скидка] AS Hide_Discount, "+
                "Бронь.[Страховка] AS Hide_Insurance, "+
                "Выезд.[Дата сбора] AS Hide_ViezdDataSbora, "+
                "Выезд.[Время сбора] AS Hide_ViezdVremiaSbora, "+
                "Выезд.[Место сбора] AS Hide_ViezdMestoSbora, "+
                "Выезд.[Порядок сбора] AS Hide_ViezdPoriadok "+
                "FROM (((((((((((Бронь INNER JOIN " +
                  "Клиент ON Бронь.[Идентификатор клиента] = Клиент.Идентификатор) INNER JOIN "+
                  "Выезд ON Бронь.[Идентификатор выезда] = Выезд.Идентификатор) INNER JOIN " +
                  "Стоимость ON Бронь.[Идентификатор стоимость] = Стоимость.Идентификатор) INNER JOIN " +
                  "[Цена проезда] ON Бронь.[Идентификатор цена проезда] = [Цена проезда].Идентификатор) INNER JOIN "+
                  "Город ON [Цена проезда].[Идентификатор город] = Город.Идентификатор) INNER JOIN "+
                  "Направление ON Город.[Идентификатор направления] = Направление.Идентификатор) INNER JOIN "+
                  "[Цена проживания] ON Бронь.[Идентификатор цена проживания] = [Цена проживания].Идентификатор) INNER JOIN "+
                  "[База отдыха] ON [Цена проживания].[Идентификатор база отдыха] = [База отдыха].Идентификатор) INNER JOIN "+
                  "Условия ON [Цена проживания].[Идентификатор условия] = Условия.Идентификатор) INNER JOIN "+
                  "Комната ON [Цена проживания].[Идентификатор комната] = Комната.Идентификатор) INNER JOIN "+
                  "Транспорт ON [Цена проезда].[Идентификатор транспорт] = Транспорт.Идентификатор) ORDER BY Бронь.Идентификатор DESC";
        }

        public override string GetInsertQuery()
        {
            if (IDClient == 0 || IDPot == 0 || IDPol == 0 || IDGroup == 0 || IDClient == 0)
                return string.Empty;
            return
                "INSERT INTO Бронь ([Продолжительность отдыха], [Дата начала отдыха], [Идентификатор стоимость], [Идентификатор выезда], " +
                "[Дата конца отдыха],  [Идентификатор цена проезда], [Идентификатор цена проживания], [Идентификатор группы], " +
                "[Идентификатор клиента], [Страховка], [Скидка]) VALUES (" + LongOfRest + ", '" + DateStartOfRest +
                "', " + IDPrice + ", " + IDViezd + ", '" + DateEndOfRest + "', " + IDPot + ", " +
                IDPol + ", " + IDGroup + ", " + IDClient + ", " + Insurance + ", " + Discount + ")";
        }

        public override string GetUpdateQuery()
        {
            if (ID == 0 ||
                IDClient == 0 ||
                IDGroup == 0 ||
                IDPol == 0 ||
                IDPot == 0 ||
                IDViezd == 0 ||
                IDPrice == 0 ||
                LongOfRest == 0) return string.Empty;
            return
                "UPDATE Бронь SET [Идентификатор клиента] = " + IDClient + ", [Идентификатор группы] = " + IDGroup +
                ", [Идентификатор цена проживания] = " + IDPol + ", [Идентификатор цена проезда] = " +
                IDPot + ",  [Дата конца отдыха] = '" + DateEndOfRest + "', [Идентификатор выезда] = " + IDViezd +
                ", [Идентификатор стоимость] = " + IDPrice + ", [Дата начала отдыха] = '" + DateStartOfRest +
                "',  [Продолжительность отдыха] = " + LongOfRest + ", Страховка = " + Insurance + ", Скидка = " +
                Discount + " WHERE (Бронь.Идентификатор = " + ID + ")";
        }

        public override string GetDeleteQuery()
        {
            if (ID == 0) return string.Empty;
            return "DELETE FROM Бронь WHERE (Бронь.Идентификатор = " + ID + ")";
        }
    }
}
